1. Field
The present disclosure relates generally to Universal Serial Bus (USB) devices, and more particularly, to shortening enumeration of a tightly coupled USB device.
2. Background
The Universal Serial Bus (USB) is a standard peripheral interface for attaching computers (e.g., smartphones, tablets, ultrabooks, and laptops) to a wide variety of peripheral devices. These peripherals are generally referred to as functions, which may include hubs and devices, such as, keyboards, mice, cameras, monitors, modems, storage, and many other peripherals.
Devices in a USB system connect to a USB Host in a tiered star topology wherein each device connects to the USB Host through one or more hubs. The USB system may be a polled bus wherein a USB Host computer includes a single USB controller that manages all communication on the bus and monitors the bus topology for changes due to devices being attached or removed.
Bus transactions may include three packets. The USB Host controller sends a token packet describing the type and direction of the transaction, a device address, and an endpoint number. The USB device that is addressed recognizes its address from the token packet. Data is transferred either from the USB Host to the addressed device or from the addressed device to the USB Host based on the direction specified in the token packet. The destination of the data may respond with a handshake packet indicating a receipt status for the transferred data. Token usage may differ dependent on a type of USB system implemented. For example, in USB3.0 (Super Speed), a token packet may be used differently than in USB2.0 (High Speed).
While the USB system supports multiple peripherals connected to the bus, the USB protocol is a point-to-point protocol. In other words, a single USB Host can send data to a single uniquely addressed device at a time. Thus, data for the various devices are time multiplexed so that each device can receive or transmit data during its time slot.
The USB system generally defines frames that are one millisecond long. Within that frame, the USB system may allocate different time slots to many or all of the devices on the bus. Each device has a unique address. Thus, the device knows whether transmitted data is intended for the device. The device may also supply the unique address when transmitting data to allow the USB Host to know from which device the data is received.
When a USB device is first connected to the USB Host, the USB device performs an initialization, enumeration, and configuration process to set up the USB device for use by the USB Host. This setup process may be quite lengthy for complex USB devices. However, many operating systems impose certification requirements on how long a USB device can take to perform the setup process before it is available to the operating system.
Thus, there is a need for systems, apparatuses, and methods for performing a fast setup process to meet operating system requirements while still allowing complex configuration of USB devices.